Kafka REST Proxy的最终目标肯定是实现所有Java Client和命令行工具所有的功能,但目前只开发了或者说只开放了部分。
Metadata
大部分关于brokers,topics,partitions和config的metadata都能通过GET请求获取
Producers
Producer API并不暴露producer对象,它创建了一个很小的producer池(每种格式一个producer),接受produce request并使用对应的producer来发送
Consumers
REST Proxy实现了high-level consumer的consumer-groups功能。Consumers是有状态的,因此需要跟REST Proxy的实例绑定。Offset的提交可以是自动的,也可以由client发送请求来提交。目前每个consumer都是单线程消费,所以如果希望通过多线程来提升吞吐量,那么需要使用多个consumer
数据格式
REST Proxy目前支持三种格式:JSON,base64编码二进制和Avro。如果使用Avro,需要在Schema Registry中注册和验证schema
负载均衡
REST Proxy可以启动多个实例来分担压力,并可以通过round robin DNS, 发现服务或者其他基于软件或硬件的负载均衡器来进行请求转发。但注意,由于consumer是有状态的,因此必须保证consumer必须跟REST Proxy实例绑定
Simple Consumer
一般来说high-level consumer是推荐使用的,但如果有特殊的需求需要消费特定offset的消息,也可以使用Rest Proxy的low-level consumer